package com.eastfair.projectcore.vo;

import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.projectcore.enumeration.MenuMenuTypeEnum;
import com.eastfair.vo.VoGroupClass;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 实体类
 * 菜单
 * </p>
 *
 * @author ligang
 * @since 2021-07-22
 */
@Data
@ApiModel(value = "AppMenu", description = "前端菜单")
public class AppMenuVO implements Serializable {

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long id;

    /**
     * 菜单名称
     */
    @ApiModelProperty(value = "菜单名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String name;

    /**
     * 菜单名称（英文）
     */
    @ApiModelProperty(value = "菜单名称（英文）")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String enName;

    /**
     * code码
     */
    @ApiModelProperty(value = "code码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String code;

    /**
     * 范围  比如（首页导航、底部菜单等等），根据terminalType联动查询	FALSE	FALSE
     */
    @ApiModelProperty(value = "范围  比如（首页导航、底部菜单等等），根据terminalType联动查询	FALSE	FALSE")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String region;

    /**
     * 连接类型，比如：h5外链，展品详情，展商详情，原生页面等等，下拉项包括业务接口和字典接口
     */
    @ApiModelProperty(value = "连接类型，比如：h5外链，展品详情，展商详情，原生页面等等，下拉项包括业务接口和字典接口")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String linkType;

    /**
     * 值例如：www.baidu  / 内联地址 /展商id等等
     */
    @ApiModelProperty(value = "值例如：www.baidu  / 内联地址 /展商id等等")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String link;

    /**
     * 额外参数
     */
    @ApiModelProperty(value = "额外参数")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String param;

    /**
     * icon
     */
    @ApiModelProperty(value = "icon")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String icon;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer sequence;

    /**
     * 父级id
     */
    @ApiModelProperty(value = "父级id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long parentId;




    /**
     * 菜单类型 #{catalog:目录;menu:菜单;button:按钮}
     */
    @ApiModelProperty(value = "菜单类型 #{catalog:目录;menu:菜单;button:按钮}")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private MenuMenuTypeEnum menuType;


    /**
     * 路由参数
     */
    @ApiModelProperty(value = "路由参数")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String linkParam;

    /**
     * 组件路径,前端资源路径，给前端用的
     */
    @ApiModelProperty(value = "组件路径,前端资源路径，给前端用的")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String moduleUrl;

    /**
     * 权限字符
     */
    @ApiModelProperty(value = "权限字符")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String permission;


    /**
     * 是否外链(默认1：是 0:否)
     */
    @ApiModelProperty(value = "是否外链(默认1：是 0:否)")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer isOutLink;

    /**
     * 是否显示(默认1：是 0:否)
     */
    @ApiModelProperty(value = "是否显示(默认1：是 0:否)")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer isShow;

    /**
     * 菜单第几层
     */
    @ApiModelProperty(value = "菜单层数")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer level;
    /**
     * 子菜单信息
     */
    @ApiModelProperty(value = "子菜单信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<AppMenuVO> childVoList;


//    /**
//     * 按钮权限集合
//     */
//    @ApiModelProperty(value = "按钮权限集合")
//    @JsonInclude(JsonInclude.Include.NON_NULL)
//    @VoInfo(groups = {VoGroupClass.all.class})
//    private List<String> buttonPermissionList;

}
